import { useStore } from 'vuex';
// ComputedRef computed的数据类型
import { ref, computed, ComputedRef } from 'vue';
interface LoadParams {
  currentPage: number
  pageSize: number
  id?:string
}
// actionName： action 名字  total：总的页数 parmas： 加载页数
const useLoadMore = ( actionName: string, total: ComputedRef<number>, parmas: LoadParams = {currentPage: 2, pageSize: 5 }) => {
  const store = useStore()  // 创建store
  const currentPage = ref(parmas.currentPage)  // 把传入的页数变为响应式
  const requestParams = computed(() => ({  // 发送请求要用的参数   requestParams变为响应式
    currentPage: currentPage.value,
    pageSize: parmas.pageSize  // 每页多少个
  }))
  const requestParamsAndId = computed(() => ({  // 发送请求要用的参数   requestParams变为响应式
    currentPage: currentPage.value,
    pageSize: parmas.pageSize,  // 每页多少个
    id: parmas.id
  }))
  // 点击加载更多方法
  const loadMorePage = () => {
    // 发送请求
    if (parmas.id) {
      store.dispatch(actionName, requestParamsAndId.value).then(() => {
        // 成功后页码加1, 下次直接调用
        requestParamsAndId.value.currentPage++
      })
    }else {
      store.dispatch(actionName, requestParams.value).then(() => {
        // 成功后页码加1, 下次直接调用
        requestParams.value.currentPage++
      })
    }
  }
  // 是否到了最后一页
  const isLastPage = computed(() => {
    // ceil 向上取整，  总的页码数  === 当前页码数 就是是最后一页了
    if (parmas.id) {
      // console.log(total.value, requestParamsAndId.value.pageSize, Math.ceil(total.value / requestParamsAndId.value.pageSize), requestParamsAndId.value.currentPage );
      if(total.value < requestParamsAndId.value.pageSize){
        return true
      }
      return Math.ceil(total.value / requestParamsAndId.value.pageSize) === requestParamsAndId.value.currentPage
    } else {
      return Math.ceil(total.value / requestParams.value.pageSize) === requestParams.value.currentPage
    }
    
  })
  return {loadMorePage, isLastPage}
}
export default useLoadMore